<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  <meta http-equiv="Pragma" content="no-cache">
  <meta http-equiv="no-cache">
  <meta http-equiv="Expires" content="0">
  <meta http-equiv="Cache-Control" content="no-cache">
  <meta name="format-detection" content="telephone=no">
  <title>webBasic-js</title>
</head>
<body>
<div class="box">
	
</div>
<script>
let js=`
doucument load和document ready区别  
  load是页面所有资源全部加载执行，包括dom,css,js,图片资源   
  ready是dom文档树加载完成执行，比Load执行快。
  原生js中不包括ready方法，只有load方法就是onload事件 
如何检测一个变量是string类型   
  typeof('123')==='string'   
  '123'.constructor===String   
  Object.prototype.toString.call('123')==='[object String]'
js去除字符串空格  
  replace正则   
  str.trim()去除两端空白字符  
  $.trim()
==和===   
  ==会进行必要的类型转换再比较，严格等于不会进行类型转换
怎样添加，移除，复制，创建，查找节点  
  createDocumentFragment()  
  createElement()  
  createTextNode()   
  appendChild()  
  removeChild()  
  replaceChild()  
  insertBefore()   
  getElementsByTagName()  
  getElementsByName()  
  getElementsById()
事件委托：
  利用事件冒泡的原理，让自己触发的时间，让他的父元素代理执行  
  适合事件委托的事件：click,mousedown,mouseup,keydown,keyup,keypress  
  可以提高性能 
  document.querySeletor('ul').onclick=(event)=>{
  	let target=event.target
  	if(target.nodeName=='li'){
  		console.log(target.innerHTML)
  	}
  }
require和import区别  
  require是运行时加载,import是编译时加载
typeof返回数据类型  
  string boolean number Object Fuction undefined symbol
js请求一般情况下有哪些地方有缓存处理   
  dns缓存 
  cdn缓存 
  浏览器缓存 
  服务器缓存
3种强制转换和2种隐式转换   
  强制：parseInt parseFloat Number   
  隐式：+ -
闭包的理解  
  闭包就是能够读取其他函数内部变量的函数  
  特性：函数嵌套函数，函数内部可以引用外部的参数和变量，参数和变量不会被垃圾回收机制回收  
  优点：变量长期存储，不会被销毁。避免全局变量的污染。私有成员的存在  
  缺点：常驻内存，增加内存使用量；容易造成内存泄漏
js我自己常用的循环方法   
  for(i=0;i<arr.length;i++){}   
  for(let e of data){}  
  arr.forEach(function(i,index){})
判断一个对象是否是数组？  
  typeof和instanceof  
  instanceof可以判断数组  a instanceof Array
  Array.isArray()
<script>标签的defer和asnyc属性的作用及区别  
  都是异步执行  
  defer是文档所有元素解析完成后执行，asnyc是加载完立刻执行
js本身是单线程，依靠浏览器完成的异步操作
数组函数map/forEach/reduce/filter   
  map()对数组进行遍历，返回处理后的新数组
    var arr=[2,5,3,4]
    var ret=arr.map(function(value){
      return value+1
    })
    console.log(ret)  //[3,6,4,5]
  forEach()对数组进行遍历
    var arr=[2,5,3,4]
    var ret=arr.forEach(function(value){
      console.log(value) //2,5,3,4
    })
  reduce() 对数组进行迭代，两两操作，返回一个值
    var arr=[2,5,3,4]
    var ret=arr.reduce(function(a,b){
      return a*b
    })
    console.log(ret)  //24
  filter() 过滤
    var arr=[2,,5,3,4]
    var ret=arr.filter(fucntion(value){
      return value>3
    })
  console.log(ret) //[5,4]
split()和join()区别  
  join()把数组中的元素通过指定分隔符分隔，放入一个字符串  
  split()把一个字符串通过制定的分隔符，分隔成数组
js数据类型  
  string number boolean  null  undefined  object  symbol
sort()排序  
  sort()按默认字母顺序排序  
  sort(function(a,b){return a-b})升序排列  
  sort(function(a,b){return b-a})降序排列 
数组常用方法  
  map()不改变原数组，调用函数方法返回新数组  
  forEach()直接改变原数组  
  filter()返回满足条件的新数组  
  every()对所有元素进行判断返回一个布尔值，如果所有元素都满足条件，返回true，否则返回False  
  some()有元素满足条件返回true，所有都不满足返回false  
  reduce()两两操作，返回一个值   
  push()数组后面添加元素  
  pop()删除数组最后一个元素   
  shift()删除数组第一个元素  
  unshift()将元素添加到数组开头   
  isArray()判断一个对象是不是数组  
  concat()将多个数组拼接成一个数组   
  toString()将数组转化为字符串  
  join()将数组转化为字符串   
  splice(开始位置，删除个数)  arr.splice()  
  slice(开始位置，结束位置)截取指定位置，返回选定位置元素新数组
字符串常用操作  
  charAt(index)返回指定索引处的字符串   
  charCideAt(index)返回指定索引处字符的unicode值   
  concat(str1,str2)连接多个字符串  
  indexOf(str)返回str在父串中第一次出现的位置，没有则返回-1  
  lastIndexOf(str)返回str在父串最后一次出现的位置，没有返回-1  
  match(regex)搜索字符串，并返回正则表达式的所有匹配  
  replace(str1,str2)用str2替换str1   
  search(regex)正则表达式搜索字符串，返回第一个匹配的位置  
  slice(start,end)返回截取位置字符串  
  split()将字符串分割为数组  
  substr(start,length)   
  substring(from,to)返回截取位置之前的字符串  
  toLowerCase()小写  
  toUpperCase()大写  
  valueOf()返回原始字符串值
数组去重最简单方法  
  var newArr=[...new Set(arr)]
字符串去重最简单方法  
  [...new Set('abbbaac')].join('')
数组的方法  
  concat()连接数组  
  join()数组转字符串  
  pop()删除数组最后一个元素  
  push()数组最后添加一个元素  
  shift()删除数组第一个元素  
  unshift()数组开头添加一个元素  
  slice(start,end)截取数组指定位置并返回  
  sort()数组排序   
  splice(start,length)截取指定位数数组并返回  
  toString()数组转换为字符串   










`

</script>
</body>
</html>
